package org.dromara.admin.domain.vo;

import java.math.BigDecimal;
import org.dromara.admin.domain.Product;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 产品信息视图对象 bi_product
 *
 * @author Lion Li
 * @date 2025-10-10
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = Product.class)
public class ProductVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 产品唯一ID
     */
    @ExcelProperty(value = "产品唯一ID")
    private Long id;

    /**
     * 关联主体ID（归属主体，关联bi_company.id）
     */
    @ExcelProperty(value = "关联主体ID")
    private Long companyId;

    /**
     * 创建人ID（关联bi_employee.id）
     */
    @ExcelProperty(value = "创建人ID")
    private Long creatorId;

    /**
     * 分类ID（关联bi_product_category.id）
     */
    @ExcelProperty(value = "分类ID")
    private Long categoryId;

    /**
     * 产品分类信息
     */
    @ExcelProperty(value = "产品分类信息")
    private ProductCategoryVo productCategoryInfo;

    /**
     * 分组id （关联bi_product_group.id）
     */
    @ExcelProperty(value = "分组ID")
    private Long groupId;

    /**
     * 产品分组信息
     */
    @ExcelProperty(value = "产品分组信息")
    private ProductGroupVo productGroupInfo;

    /**
     * 排序序号
     */
    @ExcelProperty(value = "排序序号")
    private Integer sort;

    /**
     * 产品名称
     */
    @ExcelProperty(value = "产品名称")
    private String name;

    /**
     * 销售单价（保留2位小数）
     */
    @ExcelProperty(value = "销售单价")
    private BigDecimal unitPrice;

    /**
     * 进货价（保留2位小数）
     */
    @ExcelProperty(value = "进货价")
    private BigDecimal purchasePrice;

    /**
     * 产品图片URL
     */
    @ExcelProperty(value = "产品图片URL")
    private String productImg;

    /**
     * 单位（如“个”“件”）
     */
    @ExcelProperty(value = "单位")
    private String unit;

    /**
     * 规格（如“100ml”“256G”）
     */
    @ExcelProperty(value = "规格")
    private String spec;

    /**
     * 库存数量（仅“库存统计”开启时生效）
     */
    @ExcelProperty(value = "库存数量")
    private Integer stock;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;

}
